package com.mcp.converter.domain.parser;

import com.mcp.converter.shared.response.analysis.BatchAnalysisResponse;
import com.mcp.converter.shared.response.analysis.CompatibilityReclassificationResult;
import com.mcp.converter.shared.response.analysis.FallbackCompatibilityResult;

import java.util.List;

/**
 * iBatis XML解析器接口
 * 定义了解析iBatis框架XML配置文件并提取SQL语句的标准方法
 */
public interface IbatisXMLParser {
    
    /**
     * 扫描指定目录下的XML文件
     * 
     * @param directoryPath 目录路径
     * @param recursive 是否递归扫描子目录
     * @return XML文件路径列表
     */
    List<String> scanXmlFiles(String directoryPath, boolean recursive);
    
    /**
     * 从XML文件中提取SQL语句
     * 
     * @param xmlFilePath XML文件路径
     * @return 包含SQL语句信息的JSON字符串
     */
    String extractSQLsFromXML(String xmlFilePath);
    
    /**
     * 从文件路径中提取文件名
     * 
     * @param filePath 文件路径
     * @return 文件名
     */
    String extractFileNameFromPath(String filePath);
    
    /**
     * 执行后备兼容性检查
     * 
     * @param sqls SQL语句列表
     * @param batchResult 批量分析结果
     * @return 后备兼容性检查结果
     */
    FallbackCompatibilityResult performFallbackCompatibilityCheck(List<String> sqls, BatchAnalysisResponse batchResult);
    
    /**
     * 执行智能重分类
     * 
     * @param batchResult 批量分析结果
     * @param sqls SQL语句列表
     * @return 兼容性重分类结果
     */
    CompatibilityReclassificationResult performIntelligentReclassification(BatchAnalysisResponse batchResult, List<String> sqls);
    
    /**
     * 构建目录分析错误响应
     * 
     * @param directoryPath 目录路径
     * @param recursive 是否递归
     * @param startTime 开始时间
     * @param errorMessage 错误信息
     * @return 错误响应JSON字符串
     */
    String buildDirectoryAnalysisErrorResponse(String directoryPath, boolean recursive, long startTime, String errorMessage);
}